//编程实现：两个int（32位）整数m和n的二进制表达中，有多少位（bit）不同？
#include <stdio.h>

int main()
{
    int m=1999,n=2299;
    int a=m^n;//^按位异或，相同为,0，不同为1。
    int b=1,count=0;
    while(a)
    {
        //if(b&a)//按位与，都为1时为1
        //count++;
        //a=a>>1;//操作符右移，二进制右移一位
        a=a & (a-1);//a&(a-1)每次都会去掉最后一个1
        count++;
    }
    printf("有%d位不同\n",count);
    return 0;
}